# encoding：utf-8
# 文件名：MyFunction.py
# 作者:LearniT
# 描述信息:
# 创建时间:2024/10/30 9:12 AM
"""
作业：
使用1代表登录，2代表注册, 读取Excel，表名为UserInfo
注册：1、用户名不能存在（提示: 用户名已存在）、2、用户名长度6-18位（不符合规则提示：用户名应该6-18位），
3、密码包含字母和数字（不符合提示密码必须包含字母和数字）、
4密码长度6-20位（不符合规则，提示密码长度位6-20位），5、再次确认密码（两次密码一致）
登录：用户和密码正确（不正确提示"用户名或密码错误"）

"""
# 导入Excel操作类库
import openpyxl
#定义读取Excel方法
def ReadExcel():


    # 打开Excel文件
    workbook = openpyxl.load_workbook('../PoolData/userInfo.xlsx')

    # 获取活动工作表（通常是第一个工作表）
    sheet = workbook.active

    # 读取单元格数据
    cell_value = sheet['A1'].value
    # print(cell_value)

    # 读取整行或整列数据
    row_values = [cell.value for cell in sheet[1]]  # 第一行数据
    column_values = [sheet[f'A{i}'].value for i in range(1, sheet.max_row + 1)]  # A列数据

    # 遍历所有单元格数据
    #定义空列表
    userList= {}
    for row in sheet.iter_rows(values_only=True):
        #把遍历出来的用户名和密码放入字典中，用户名作为Key,密码作为Value
        userList[row[0]]=row[1]
    # 最终返回字典数据
    return userList
#定义校验用户名和密码的方法，使用u和p分别接收用户名和密码
def CheckUAndP(u,p):
    #便利用户名师傅在字典的key中，调取Excel读取方法
    for u in ReadExcel().keys():
        # 使用用户名为key取Value与密码是否一致
        if ReadExcel()[u]==p:
            # 返回错误码
            return 0
#定义登录函数
def Login():
    # global userName,password
    #定义变量userName接收输入的用户名
    userName=input("请输入用户名：")
    # 定义变量password接收输入的密码
    password=input("请输入密码：")
    #调用校验用户名和密码函数，并传入参数用户名和密码
    result=CheckUAndP(userName,password)
    #判断错误码进行处理
    if result==0:
        print("登录成功")
    else:
        print("用户名或密码错误")
def CheckUser(u):
    if 6<=len(u)<=18:
        if u in ReadExcel().keys():

            print(u)
            return "用户名已存在"
    else:
        return "用户名长度不足6-18位"
def CheckPassword(p):
    if 6 <= len(p) <= 20:
        if not (p.isalpha() or p.isdigit()):
            pass
        else:
            return "密码不符合规则"
    else:
        return "密码长度不足6-20位"
def writeExcel(u,p):
    from openpyxl import load_workbook

    # 打开原始Excel文件
    wb = load_workbook('D:\PyCharm\ test2409\ three day\ userInfo.xlsx')

    # 获取要追加写入的工作表
    ws = wb['usersheet']

    # 追加写入数据到工作表的末尾
    ws.append([u,p])

    # 保存修改后的Excel文件
    wb.save("D:\PyCharm\ test2409\ three day\ userInfo.xlsx")
def Regiter():
    # 定义变量userName接收输入的用户名
    userName = input("请输入用户名：")

    result=CheckUser(userName)
    if result!=None:
        print(result)
        exit()
    else:
        # 定义变量password接收输入的密码
        password = input("请输入密码：")
        result=CheckPassword(password)
        if result!=None:

            print(result)
        else:
            pw=input("请再次输入密码：")
            if pw==password:
                writeExcel(userName,password)
                print("注册成功！")
            else:
                print("两次密码不一致")



#主函数
if __name__ == '__main__':
    #定义变量接收一个整数
    Num=int(input("请输入一个数1或2："))
    #判断这个整数是不是1
    if Num==1:
        #是1，调用登录函数
        Login()
    #判断这个整数是不是2
    elif Num==2:
        #是2调用注册函数
        Regiter()
    #否则打印其他信息
    else:
        print("请点击正确位置")